[IA64] Every processor call xen_early_setup (required on SMP-guest to set ivt).
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 1 Mar 2006 17:01:54 +0000 (10:01 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 1 Mar 2006 17:01:54 +0000 (10:01 -0700)
Only BP set running_on_xen.
xensetup.S slightly compacted.

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
linux-2.6-xen-sparse/arch/ia64/kernel/head.S
linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S

index 379bbde2f68ddde6b614ba53a634fe3ba7d5aa2b..9fae5fb86ee24904fda7cba56b9cce9699e07b0b 100644 (file)
@@ -363,6 +363,12 @@ start_ap:
        ;;
 (isBP) st8 [r2]=r28            // save the address of the boot param area passed by the bootloader
 
+#ifdef CONFIG_XEN
+       //  Note: isBP is used by the subprogram.
+       br.call.sptk.many rp=early_xen_setup
+       ;;
+#endif
+
 #ifdef CONFIG_SMP
 (isAP) br.call.sptk.many rp=start_secondary
 .ret0:
@@ -371,10 +377,6 @@ start_ap:
 
        // This is executed by the bootstrap processor (bsp) only:
 
-#ifdef CONFIG_XEN
-       br.call.sptk.many rp=early_xen_setup
-       ;;
-#endif
 #ifdef CONFIG_IA64_FW_EMU
        // initialize PAL & SAL emulator:
        br.call.sptk.many rp=sys_fw_init
index 7b248f6252b0af2f9b3a83da526dbacd682da054..c611974d78d3be638b37d6fa827ad1425e21c3cc 100644 (file)
 running_on_xen:
        data4 0
 
+#define isBP   p3      // are we the Bootstrap Processor?
+
        .text
 GLOBAL_ENTRY(early_xen_setup)
-       mov r8=cr.dcr;;
-       extr.u r8=r8,63,1
-       movl r9=running_on_xen;;
-       st4 [r9]=r8;;
+       mov r8=cr.dcr
+(isBP) movl r9=running_on_xen;;
+       extr.u r8=r8,63,1;;
        cmp.ne p7,p0=r8,r0;;
+(isBP) st4 [r9]=r8
 (p7)   movl r10=xen_ivt;;
 (p7)   mov cr.iva=r10
        br.ret.sptk.many rp;;
@@ -28,6 +30,6 @@ END(early_xen_setup)
 
 GLOBAL_ENTRY(is_running_on_xen)
        movl r9=running_on_xen;;
-       ld4 r8=[r9];;
+       ld4 r8=[r9]
        br.ret.sptk.many rp;;
 END(is_running_on_xen)